package presentacion.Cliente;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import negocio.Cliente.TransferCliente;
import negocio.Cliente.TransferEmpresa;
import negocio.Cliente.TransferParticular;

import presentacion.Controlador.Controlador;
import presentacion.Controlador.Eventos;

public class PanelClientes extends JPanel{

	private static final long serialVersionUID = 1911828067762587915L;
	private JButton nuevoCliente, eliminarCliente, buscarCliente , actualizarCliente;
	private JRadioButton Particular,Empresa;
	
	public PanelClientes()
	{
		this.nuevoCliente = new JButton("Nuevo Cliente");
		this.eliminarCliente = new JButton("Eliminar Cliente");
		this.buscarCliente = new JButton("Buscar Cliente");
		this.actualizarCliente = new JButton("Actualizar Cliente");
		this.Empresa = new JRadioButton("Empresa");
		this.Particular = new JRadioButton("Particular");
		
		this.setLayout(new GridLayout(2,2, 2,2));
				
		ButtonGroup group = new ButtonGroup();		
		group.add(Particular);
		group.add(Empresa);		
		
		JPanel tipo = new JPanel();
		tipo.setLayout(new GridLayout(1,2));
		tipo.add(Particular);
		tipo.add(Empresa);
		
		JPanel gestion = new JPanel();
		gestion.setLayout(new GridLayout(2,2));
		gestion.add(this.nuevoCliente);
		gestion.add(this.eliminarCliente);
		gestion.add(this.buscarCliente);
		gestion.add(this.actualizarCliente);
		
		this.add(tipo);
		this.add(gestion);
		
		final Controlador c = Controlador.getInstancia();
		
		this.nuevoCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(!PanelClientes.this.Particular.isSelected() &&
				   !PanelClientes.this.Empresa.isSelected())
					{
						JOptionPane.showMessageDialog(null,"No se ha seleccionado ningun tipo de cliente");
					}				
				else if(PanelClientes.this.Particular.isSelected())
					{

					JFrame ventana = new JFrame("NUEVO CLIENTE");
					JButton boton = new JButton("CREAR");
					final JLabel nombre = new JLabel("Nombre del cliente: ");
					final JLabel dni = new JLabel("DNI del cliente: ");
					final JTextField tname = new JTextField(20);
					final JTextField tdni = new JTextField(9);
					
					ventana.setLayout(new FlowLayout());
					ventana.add(nombre);
					ventana.add(tname);
					ventana.add(dni);
					ventana.add(tdni);
					ventana.add(boton);
					
					ventana.pack();
					ventana.setVisible(true);
					ventana.setLocationRelativeTo(null);
					
					boton.addActionListener(new ActionListener() {					
						@Override
						public void actionPerformed(ActionEvent arg0) {
							if(tdni.getText().compareToIgnoreCase("")==0)
								{
								JOptionPane.showMessageDialog(null,"No se ha introducido el DNI");
								}
							else if(tname.getText().compareToIgnoreCase("")==0)
								{
								 JOptionPane.showMessageDialog(null,"No se ha introducido el nombre");
								}
							else
								{
								String dni = tdni.getText();
								String name = tname.getText();
								TransferParticular t = new TransferParticular(dni, name);
								c.accionParticular(Eventos.crearCliente, t);
								}							
						}
					});										
				 }
				else if(PanelClientes.this.Empresa.isSelected())
				 {
					JFrame ventana = new JFrame("NUEVA EMPRESA");
					JButton boton = new JButton("CREAR");
					final JTextField tcod = new JTextField(10);
					final JTextField tdom = new JTextField(20);					
					final JTextField tdni = new JTextField(9);

					
					final JLabel ldom = new JLabel("Domicilio: ");
					final JLabel lcod =  new JLabel("Codigo CNAE:");
					final JLabel dni = new JLabel("NIF del cliente: ");
					
					
					ventana.setLayout(new FlowLayout());
					
					ventana.add(ldom);
					ventana.add(tdom);
					ventana.add(lcod);
					ventana.add(tcod);
					ventana.add(dni);
					ventana.add(tdni);
					ventana.add(boton);
					
					ventana.pack();
					ventana.setVisible(true);
					ventana.setLocationRelativeTo(null); 
					
					boton.addActionListener(new ActionListener() {					
						@Override
						public void actionPerformed(ActionEvent arg0) {					
							if(tdni.getText().compareTo("")==0)
							{
							 JOptionPane.showMessageDialog(null,"No se ha introducido el dni");
							}
						else if(tdom.getText().compareToIgnoreCase("")==0)
							{
							 JOptionPane.showMessageDialog(null,"No se ha introducido el domicilio");
							}
						else if(tcod.getText().compareTo("")==0)
							{
							JOptionPane.showMessageDialog(null,"No se ha introducido el codigo");
							}
						else
						{
						  try
						  {
							 TransferEmpresa t = new TransferEmpresa(tdni.getText(), tdom.getText(),Integer.parseInt(tcod.getText()));
							c.accionEmpresa(Eventos.crearEmpresa, t);
						  }catch(NumberFormatException e)
							{
							  JOptionPane.showMessageDialog(null,"formato de codigo inadecuado");	
							}
						}								
						}
					});	
					
				 }
			}
		});
		
		this.actualizarCliente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(!PanelClientes.this.Particular.isSelected() &&
				   !PanelClientes.this.Empresa.isSelected())
					{
						JOptionPane.showMessageDialog(null,"No se ha seleccionado ningun tipo de cliente");
					}				
				else if(PanelClientes.this.Particular.isSelected())
					{

					JFrame ventana = new JFrame("ACTUALIZAR CLIENTE");
					JButton boton = new JButton("ACTUALIZAR");
					
					final JTextField tID = new JTextField(20);
					final JTextField tname = new JTextField(20);
					final JTextField tdni = new JTextField(9);

					final JLabel nombre = new JLabel("Nombre del cliente: ");
					final JLabel dni = new JLabel("DNI del cliente: ");
					final JLabel lID =  new JLabel("ID del cliente:");
					
					ventana.setLayout(new FlowLayout());
					ventana.add(lID);
					ventana.add(tID);
					ventana.add(nombre);
					ventana.add(tname);
					ventana.add(dni);
					ventana.add(tdni);
					ventana.add(boton);
					
					ventana.pack();
					ventana.setVisible(true);
					ventana.setLocationRelativeTo(null);
					
					boton.addActionListener(new ActionListener() {					
						@Override
						public void actionPerformed(ActionEvent arg0) {
							if(tdni.getText().compareToIgnoreCase("")==0)
								{
								 JOptionPane.showMessageDialog(null,"No se ha introducido el dni");
								}
							else if(tname.getText().compareToIgnoreCase("")==0)
								{
								 JOptionPane.showMessageDialog(null,"No se ha introducido el nombre");
								}
							else{
								try
								{
								 TransferParticular t = new TransferParticular(Integer.parseInt(tID.getText()), tdni.getText(), tname.getText());
								 c.accionParticular(Eventos.actualizarCliente, t);
								}catch(NumberFormatException e)
								{
								 JOptionPane.showMessageDialog(null,"formato de ID inadecuado");	
								}
							}																							
						}
					});										
				 }
				else if(PanelClientes.this.Empresa.isSelected())
				 {
					JFrame ventana = new JFrame("ACTUALIZAR CLIENTE");
					JButton boton = new JButton("ACTUALIZAR");
					
					final JTextField tID = new JTextField(20);
					final JTextField tcod = new JTextField(10);
					final JTextField tdom = new JTextField(20);
					final JTextField tname = new JTextField(20);

					final JLabel nombre = new JLabel("Nombre: ");
					final JLabel ldom = new JLabel("Domicilio: ");
					final JLabel lID =  new JLabel("ID:");
					final JLabel lcod =  new JLabel("Codigo CNAE:");
					
					
					ventana.setLayout(new FlowLayout());
					ventana.add(nombre);
					ventana.add(tname);
					ventana.add(ldom);
					ventana.add(tdom);
					ventana.add(lcod);
					ventana.add(tcod);
					ventana.add(lID);
					ventana.add(tID);					
					ventana.add(boton);
					
					ventana.pack();
					ventana.setVisible(true);
					ventana.setLocationRelativeTo(null); 
					
					boton.addActionListener(new ActionListener() {					
						@Override
						public void actionPerformed(ActionEvent arg0) {		
							if(tname.getText().compareTo("")==0)
							{
								JOptionPane.showMessageDialog(null,"No se ha introducido el nombre");
							}
							else if(tdom.getText().compareToIgnoreCase("")==0)
							{
								JOptionPane.showMessageDialog(null,"No se ha introducido el domicilio");
							}
							else if(tcod.getText().compareToIgnoreCase("")==0)
							{
								JOptionPane.showMessageDialog(null,"No se ha introducido el codigo");
							}
							else if(tID.getText().compareToIgnoreCase("")==0)
							{
								JOptionPane.showMessageDialog(null,"no se ha introducido el ID");
							}
							else
							{
								try
								{
								  TransferEmpresa t = new TransferEmpresa(Integer.parseInt(tID.getText()),
										  								  tname.getText(),
										  								  tdom.getText(),
										  								  Integer.parseInt(tcod.getText()));
								  c.accionEmpresa(Eventos.actualizarEmpresa, t);	
								}catch(NumberFormatException e)
								{
									 JOptionPane.showMessageDialog(null,"formato de ID y/o codigo inadecuados");	
								}								
							}
						}
					});	
					
				 }
			}
		});

		this.eliminarCliente.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				
				JFrame ventana = new JFrame("ELIMINAR Cliente");
				JButton boton = new JButton("ELIMINAR");
				
				final JLabel lID =  new JLabel("ID del cliente:");
				final JTextField tID = new JTextField(20);
				
				ventana.setLayout(new FlowLayout());
				ventana.add(lID);
				ventana.add(tID);
				ventana.add(boton);
				
				ventana.pack();
				ventana.setVisible(true);
				ventana.setLocationRelativeTo(null);
				
				boton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						if(tID.getText().compareTo("")==0)
							JOptionPane.showMessageDialog(null,"no se ha introducido el ID");
						else
						{
						 try
						 {
							 TransferCliente t = new TransferCliente(Integer.parseInt(tID.getText()));
							 	c.accionCliente(Eventos.eliminarCliente, t);	
						 }catch(NumberFormatException e)
							{
							 JOptionPane.showMessageDialog(null,"formato de ID inadecuado");	
							}
						}
					}					
				});		
			}	
		});
		
		this.buscarCliente.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				
				JFrame ventana = new JFrame("BUSCAR Cliente");
				JButton boton = new JButton("BUSCAR");
				
				final JLabel lID =  new JLabel("ID del cliente:");
				final JTextField tID = new JTextField(20);
				
				ventana.setLayout(new FlowLayout());
				ventana.add(lID);
				ventana.add(tID);
				ventana.add(boton);
				
				ventana.pack();
				ventana.setVisible(true);
				ventana.setLocationRelativeTo(null);
				
				boton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent arg0) {
						if(tID.getText().compareTo("")==0)
							JOptionPane.showMessageDialog(null,"no se ha introducido el ID");
						else
						{
							try
							 {
							  TransferCliente t = new TransferCliente(Integer.parseInt(tID.getText()));
							  c.accionCliente(Eventos.buscarCliente, t);	
							 }catch(NumberFormatException e)
								{
								 JOptionPane.showMessageDialog(null,"formato de ID inadecuado");	
								}					
						}
					}					
				});
			}
		});
		
	}
	
	
}
